﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports EVOLTA.Promocion.Bl.Ctrl
Imports System.IO
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Data.SqlClient
Imports System.Data
Partial Class mantenedores_cliente
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler

    Private pendientes As List(Of EseparacionVentaDetallePagos) = Nothing
    Private conyugues As List(Of Ecliente) = Nothing
    Dim expression As String = Nothing
    Dim direction As SortDirection = SortDirection.Ascending

#Region "          Formulario                               "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        hdfIdUsuario.Value = Me.Master.idUsuario
        hdfNuevo.Value = "nuevo"
        hdfEmpresa.Value = Me.Master.descEmpresa.Trim
        'btnVerificar.Visible = False

        If Not IsPostBack Then
            'btnBuscar.Attributes.Add("onclick", "CallTheServer('divBuscar@' + document.getElementById('ctl00$ContentPlaceHolder1$txtBuscar').value);")
            divddlAprobar()
            cargarProyecto()
        End If

        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "null", True)

        Dim callbackScript As String = ""
        callbackScript &= "function CallTheServer(arg)" & _
                          "{" & cbReference & "; }"

        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", callbackScript, True)
    End Sub
    'Conexion directa a la base datos para retornar los email
    Public Shared Function EmailVendedor(ByVal descEmpresa As String, ByVal idSeparacionVenta As Int32, ByVal idProyecto As Int32, ByVal idEtapa As Int32) As String
        Dim cuentas As String = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_EmailVendedor_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idSeparacionVenta", SqlDbType.Int).Value = idSeparacionVenta
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = idEtapa
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            'cuentas = New List(Of EctaCorriente)
                            Do While dr.Read
                                cuentas = dr.GetString(dr.GetOrdinal("email"))
                                'cuentas.Add(cuenta)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return cuentas
    End Function
    Private Sub cargarProyecto()
        selProyecto.DataSource = Rproyecto.SeleccionarTodo(Me.Master.descEmpresa, True)
        selProyecto.DataTextField = "descProyecto"
        selProyecto.DataValueField = "idProyecto"
        selProyecto.DataBind()
        upProyecto.Update()
    End Sub
    Protected Sub gvwLista_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwLista.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub gvwLista_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvwLista.PageIndexChanging
        pendientes = Session("lista")
        If Not pendientes Is Nothing Then
            gvwLista.DataSource = pendientes
            gvwLista.PageIndex = e.NewPageIndex
            gvwLista.DataBind()
            UpnVerificar.Update()
        End If
    End Sub
    Private Sub divddlAprobar()
        Me.selAprobar.Items.Insert(0, New ListItem("-- SELECCIONAR --", "0"))
        Me.selAprobar.Items.Insert(1, New ListItem("VERIFICADO", "V"))
        Me.selAprobar.Items.Insert(2, New ListItem("RECHAZADO", "R"))
    End Sub
    Private Function obtenerEdit(ByVal pLClientes As System.Linq.IOrderedEnumerable(Of EseparacionVentaDetallePagos)) As String
        Dim datos As New StringBuilder
        datos.Append(pLClientes.ElementAt(0).idSeparacionVenta.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).idEtapa.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).idProyecto.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).idSeparacionVentaPago.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).cliente.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).inmueble.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).idMotivo.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).descMotivo.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).fchPago.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).correlativo.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).fchCancelacion.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).montoPago.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).cuota.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).idMoneda.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).idFormaPago.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).descFormaPago.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).nroDocumento.Trim + "|")

        datos.Append(pLClientes.ElementAt(0).idEntidadFin.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).descEntidadFin.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).idCuenta.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).nroCuenta.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).vouchet.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).rutaScanner.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).observacion.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).idEstadoPago.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).descEstadoPago.Trim + "|")

        datos.Append(pLClientes.ElementAt(0).Verificado.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).tpoGestion.ToString + "|")
        Dim wretorno As String = datos.ToString()
        Return wretorno
    End Function
   
#End Region
#Region "          Verificar                                 "
    Protected Sub Verificar(ByVal Aprobar As String, ByVal Observacion As String, ByVal pEmpresa As String, ByVal pUsuario As Int32, ByVal idSeparacionVenta As Int32, ByVal idEtapa As Int32, ByVal idProyecto As Int32, ByVal Correlativo As Int32, ByVal EstadoPago As Int32, ByVal tpoGestion As Int32, ByVal idMotivo As Int32)
        RseparacionVentaDetallePagos.Verificar(pEmpresa, Aprobar, Observacion, pUsuario, idSeparacionVenta, idEtapa, idProyecto, Correlativo, EstadoPago, tpoGestion, idMotivo)
    End Sub

    Protected Function estadoDownload(ByVal dato As String) As Boolean
        If dato.Trim.Length > 1 Then
            Return True
        Else
            Return False
        End If
    End Function
    Protected Function rutaScanner(ByVal idMotivo As String, ByVal archivo As String) As String
        Return String.Format("~/cobranza/evoltaDownload.aspx?idMotivo={0}&filename={1}", idMotivo, archivo)
    End Function
#End Region
#Region "          CallBack                                 "
    Private _callbackArgument As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            If eventArgument <> String.Empty Then
                Dim varParams() As String = eventArgument.Split("@")
                Dim sr As New System.IO.StringWriter()
                Dim htm As New HtmlTextWriter(sr)
                _callbackArgument = ""
                Select Case varParams(0)

                    Case "divgvwLista"
                        pendientes = RseparacionVentaDetallePagos.SeleccionarTodoPendientePagos(Me.Master.descEmpresa, 0, "", "")
                        Session("lista") = pendientes
                        Dim listaPendientes = pendientes
                        If Not pendientes Is Nothing Then
                            Me.gvwLista.DataSource = listaPendientes
                            Me.gvwLista.DataBind()
                            Me.gvwLista.RenderControl(htm)
                        End If
                        htm.Flush()
                        _callbackArgument = varParams(0).ToString + "|" + sr.ToString()

                    Case "divBuscarProyecto"
                        'pendientes = Session("lista")
                        Dim widProyecto As Int32 = varParams(1)
                        Dim wNombre As String = UCase(CType(varParams(2).Trim, String))
                        Dim wDocumento As String = CType(varParams(3).Trim, String)
                        pendientes = RseparacionVentaDetallePagos.SeleccionarTodoPendientePagos(Me.Master.descEmpresa, widProyecto, wNombre, wDocumento)
                        Me.gvwLista.DataSource = pendientes
                        Me.gvwLista.DataBind()
                        Me.gvwLista.RenderControl(htm)
                        htm.Flush()
                        _callbackArgument = "divBuscarProyecto|divBuscarProyecto|" + sr.ToString()
                    Case "showDet"
                        pendientes = Session("lista")
                        Dim widProyecto As Int32 = varParams(1)
                        Dim widEtapa As Int32 = varParams(2)
                        Dim widSeparacionVenta As Int32 = varParams(3)
                        Dim widMotivo As Int32 = varParams(4)
                        Dim wCorrelativo As Int32 = varParams(5)

                        Dim wSr = obtenerEdit(From c In pendientes _
                                                                    Where c.idProyecto = widProyecto And _
                                                                          c.idEtapa = widEtapa And _
                                                                          c.idSeparacionVenta = widSeparacionVenta And _
                                                                          c.idMotivo = widMotivo And _
                                                                          c.correlativo = wCorrelativo _
                                                                    Select c _
                                                                    Order By c.idProyecto)

                        _callbackArgument = "detalle|showDet|Pendiente [Modificar]|" + wSr
                    Case "Verificar"
                        Dim wAprobar As String = varParams(1)
                        Dim wObservacion As String = varParams(2)
                        Dim wpEmpresa As String = varParams(3)
                        Dim wpUsuario As String = varParams(4)
                        Dim widSeparacionVenta As String = varParams(5)
                        Dim widEtapa As String = varParams(6)
                        Dim widProyecto As String = varParams(7)
                        Dim wCorrelativo As String = varParams(8)
                        Dim wEstadoPago As String = varParams(9)
                        Dim wtpoGestion As String = varParams(10)
                        Dim widMotivo As String = varParams(11)
                        pendientes = Session("lista")

                        Dim CobranzaVerificado = (From c In pendientes _
                                                                    Where c.idProyecto = widProyecto And _
                                                                          c.idEtapa = widEtapa And _
                                                                          c.idSeparacionVenta = widSeparacionVenta And _
                                                                          c.idMotivo = widMotivo And _
                                                                          c.correlativo = wCorrelativo _
                                                                    Select c _
                                                                    Order By c.idProyecto)

                        Verificar(wAprobar, wObservacion, wpEmpresa, wpUsuario, widSeparacionVenta, widEtapa, widProyecto, wCorrelativo, wEstadoPago, wtpoGestion, widMotivo)

                        '***** ENVIO DE EMAIL **********
                        'Dim correo As New System.Net.Mail.MailMessage
                        Dim EmailV As String
                        Dim Correo As Boolean
                        Dim Asunto As String
                        'Dim wBody As String
                        'Recuperar el email del vendedor del inmueble

                        Dim wVerificado = "APROBADO"
                        If wAprobar = "R" Then wVerificado = "RECHAZADO"
                        Dim wBody = "Se ha " + wVerificado + " el pago siguiente :" + "<br>"
                        wBody = wBody + "Inmueble : " + CobranzaVerificado.ElementAt(0).inmueble.Trim + "<br>"
                        wBody = wBody + "Cliente : " + CobranzaVerificado.ElementAt(0).cliente.Trim + "<br>"
                        wBody = wBody + "Motivo : " + CobranzaVerificado.ElementAt(0).descMotivo.Trim + "<br>"
                        wBody = wBody + "Cuota : " + CobranzaVerificado.ElementAt(0).cuota.ToString + "<br>"
                        wBody = wBody + "Fecha de Pago : " + CobranzaVerificado.ElementAt(0).fchPago + "<br>"
                        wBody = wBody + "Monto : " + CobranzaVerificado.ElementAt(0).montoPago.ToString + "<br>"
                        wBody = wBody + "Observacion : " + wObservacion + "<br>"
                        EmailV = EmailVendedor(wpEmpresa, widSeparacionVenta, widProyecto, widEtapa)
                        'correo.From = New System.Net.Mail.MailAddress("jorge.felix@dominiotech.com.pe")
                        'correo.To.Add(CobranzaVerificado.ElementAt(0).emailVendedor)
                        'correo.To.Add("jorge.felix@dominiotech.com.pe")
                        'correo.To.Add("jfelix2005@gmail.com")
                        'correo.Subject = "EVOLTA : Verificación Pago - " + CobranzaVerificado.ElementAt(0).inmueble
                        'correo.Body = wBody
                        'correo.IsBodyHtml = True
                        'correo.Priority = System.Net.Mail.MailPriority.Normal
                        Asunto = "EVOLTA : Verificación Pago - " + CobranzaVerificado.ElementAt(0).inmueble
                        Correo = Rsendemail.SendMail(EmailV, Asunto, wBody)

                        ''********************************
                        'Recarga Grilla con nuevos datos
                        pendientes = RseparacionVentaDetallePagos.SeleccionarTodoPendientePagos(Me.Master.descEmpresa, 0, "", "")
                        Session("lista") = pendientes
                        Dim listaPendientes = pendientes
                        If Not pendientes Is Nothing Then
                            Me.gvwLista.DataSource = listaPendientes
                            Me.gvwLista.DataBind()
                            Me.gvwLista.RenderControl(htm)
                        End If
                        htm.Flush()
                        _callbackArgument = "detalle|Verificar|Pendiente [Modificar]|Grabado|" + sr.ToString()
                    Case "delete"
                        Dim pCliente As New Ecliente
                        With pCliente
                            .idCliente = CType(varParams(1), Int32)
                            .idUsuario = Me.Master.idUsuario
                        End With
                        Rcliente.EliminarMantenedor(Me.Master.descEmpresa, pCliente)
                End Select
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region

End Class
